/*
 * Circle.h
 *
 *  Created on: Jan 20, 2011
 *      Author: Team MRF
 */

#ifndef CIRCLE_H_
#define CIRCLE_H_

#include "Shape.h"
#include "BoundingRectangle.h"

#include <iostream>
using std::cout;
using std::cin;

namespace gsp280Project2
{
	class Circle: protected Shape
	{
	private:
		float radius;
		BoundingRectangle collisionBox;

	public:
		Circle() : radius(1) {};								//Default Constructor
		Circle(const float &Radius);							//Overloaded Constructor
		virtual ~Circle(){};									//Destructor


		void setRadius(const float &Radius);					//set the radius of the circle
		const float getRadius() const;							//return the radius of the circle
		
		const Vector2 getCollisionBox_Location() const; 		//return collsionBox location
		const float getCollisionBox_Location_X() const; 		//return collsionBox location_X
		const float getCollisionBox_Location_Y() const; 		//return collsionBox location_Y

		const float getCollisionBox_Height() const; 			//return collsionBox Height
		const float getCollisionBox_Width() const; 				//return collsionBox Width

		const float calcArea() const;							//calculate area of circle

		void setLocation(const Vector2 &vect);					//set the location of the circle given a vector
		void setLocation(const float &x, const float &y);		//set the location of the circle given x,y
		void setLocation_X(const float &x);						//set the location_X of the circle
		void setLocation_Y(const float &y);						//set the location_Y of the circle
		
		const Vector2 getLocation() const;						//get the location of the circle in Vector2
		const float getLocation_X() const;						//get the location_X of the circle
		const float getLocation_Y() const;						//get the location_Y of the circle

		const bool intersects( const Circle &circle );			//Detect IF 'this'collides with input obj

		const float float_RoundOff2 ( float value );			//Round float to 2 decimal places

		const Vector2 getVertex_BL ( ) const; 					//Get Bottom-Left Vertex of Obj
		void setVertex_BL ( const float &x, const float &y );	//Set Bottom-Left Vertex of Obj

		const Vector2 getVertex_BR ( ) const; 					//Get Bottom-Right Vertex of Obj
		void setVertex_BR ( const float &x, const float &y );	//Set Bottom-Right Vertex of Obj

		const Vector2 getVertex_TL ( ) const;					//Get Top-Left Vertex of Obj
		void setVertex_TL ( const float &x, const float &y );	//Set Top-Left Vertex of Obj

		const Vector2 getVertex_TR ( ) const; 					//Get Top-Right Vertex of Obj
		void setVertex_TR ( const float &x, const float &y );	//Set Top-Right Vertex of Obj

	// NEEDED!!
	// Bounding Rectangle methods to collisionBox the circle.
	
	};

}

#endif /* CIRCLE_H_ */
